/**
 * 定义项目中各种需要用到的typescript接口类型数据结构
 */
import {
    type RouteLocationNormalized,
    //type RouteRecordRaw
} from 'vue-router';
import type {AttachmentsProps} from "ant-design-x-vue";
/**
 * keepalive缓存用到的路由实体单元
 */
export interface CachedView extends Partial<RouteLocationNormalized> {
    title?: string;
}

/**
 * 与服务端的异步接口：返回的数据结构
 */
export interface ResponseConfig {
    code: string,
    data: any,
    success: boolean,
    msg: string|null
}
/**
 * 在store中keepalive已缓存的页面，以及在多页签下已打开的页面
 */
export interface CacheViewState {
    // visitedViews: TagView[];
    cachedViews: string[]; //keepalive缓存页面
}
/**
 * 在store中的用户状态信息数据结构
 */
export interface UserState {
    token?: string, //不是sessionId就是token; 仅在getInfo、login返回用户信息时由服务端传入，前端存储时不保存
    id: string,
    name: string,
    userType:number, //WEG人员身份类型； 0游客、1渠道商、2店铺、3普通LT员、4LT人员-基地管理员客服、5LT人员省分管理员客服
    sex?: number,// 1男0女
    avatar:string,
    mobile?: string,
    // roles?: string[];
    // perms?: string[];
}
/**
 * 向大模型发送的消息的结构
 */
export interface CacheSendState {
    msg : string|null,
    mode : string|null,
    linkNet : boolean,
    uploadType? : number, //-1还没开始选 0图片、1文档、2语音音频,
    uploadList? : AttachmentsProps['items'],
}
/**
 * 文件API类型声明
 */
export interface FileInfo {
    name: string,
    url: string,
}

/**
 * AI大模型聊天内容气泡的内容类型定义
 */
export interface BubbleMessageType {
    event?: string;  //事件类型，参考dify方面的定义
    content: string;  //发送的消息
    conversationId?: string;  //会话id
    taskId?: string; //本次消息返回任务的ID，与messageId是同一回事
    mode?: string;  //大模型标识，选填
    linkNet? : boolean;
    files?: any[]; //上传的文件列表
}
